/*
srkrt.ia.h
Ce fichier regroupe les prototypes de l'ensemble des fonctions de l'IA
*/

#ifndef INCLUDE_SRKRT_IA
#define INCLUDE_SRKRT_IA

#include "srkrt_method.h"

#define PLAYER_2_WON 1
#define PLAYER_1_WON -1
#define NOT_OVER 2
#define DRAW 0
/* Valeur extremes renvoyee par l'heuristique */
#define MAX_H_VALUE 24
#define MIN_H_VALUE -24

/*
Renvois la valeur attribué au jeu a un moment donne.
game : le jeu a evaluer.
*/
int srkrt_ia_heuristic(Surakarta game) ;

/*
Renvois le meilleur coup a jouer par l'IA.
game : le jeu sur lequel reflechir
maxDepth : profondeur maximale du calcul.
*/
Move srkrt_ia_bestMove(Surakarta game) ;

/*
Fonction realisant l'analyse alpha-beta du jeu.
game: le jeu a analyser.
alpha, beta : c'est evident, non ?
iterLeft : nombre d'iterations restantes avant l'horizon de calcul.
*/
int srkrt_ia_alphabeta(Surakarta game, int alpha, int beta, int iterLeft) ;

/*
Indique si la partie est terminee.
Renvois : DRAW, PLAYER_1_WON, PLAYER_2_WON ou NOT_OVER suivant le resultat.
POUR L'INSTANT, POUR DETERMINER SI LA PARTIE EST NULLE, ON RECONNAIT JUSTE LE CAS 1 vs 1
game : le jeu a evaluer.
*/
int srkrt_ia_result(Surakarta game) ;

/*
Renvois le max des deux args
*/
int max(int a, int b) ;
/*
Renvois les min des deux args
*/
int min(int a, int b) ;

#endif
